home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / ABUSESRC.ZIP / AbuseSrc / abuse / src / net / mac / ethtst.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-11  |  3.8 KB  |  204 lines

  1. #include <Slots.h>
  2. #include <ROMDefs.h>
  3. #include <ENET.h>
  4. #include <string.h>
  5. #include <stdio.h>
  6. #include <memory.h>
  7.  
  8. #define NETBUFFERSIZE 8888
  9. #define ETHERTYPEID 0x8137
  10.  
  11. int gENETDone;
  12. short ENETVRefNum;
  13. char gMultiCastAddr[6];
  14.  
  15. unsigned char *pstrcpy(unsigned char *d, unsigned char *s)
  16. {
  17.     unsigned int i = (unsigned char)s[0];
  18.  
  19.     BlockMove(s,d,i+1);
  20.     
  21.     return d;
  22. }
  23.  
  24. short Get_ENET_Driver()
  25. {
  26.     SpBlock mySBlk;
  27.     ParamBlockRec myPBRec;
  28.     OSErr err;
  29.     short found, ENETRefNum;
  30.     Str15 EnetStr,Enet0Str;
  31.     char slot,id;
  32.     
  33.     memset(&mySBlk,0,sizeof(mySBlk));
  34.     
  35.     found = 0;
  36.     ENETRefNum = 0;
  37.     mySBlk.spParamData = 1;
  38.     mySBlk.spCategory = catNetwork;
  39.     mySBlk.spCType = typeEtherNet;
  40.     mySBlk.spDrvrSW = 0;
  41.     mySBlk.spDrvrHW = 0;
  42.     mySBlk.spTBMask = 3;
  43.     mySBlk.spSlot = 0;
  44.     mySBlk.spID = 0;
  45.     mySBlk.spExtDev = 0;
  46.     
  47.     do {
  48.         err = SGetTypeSRsrc(&mySBlk);
  49.         if (err == noErr)
  50.         {
  51.             found++;
  52.             slot = mySBlk.spSlot;
  53.             id = mySBlk.spID;
  54.         }
  55.     } while ( err != smNoMoresRsrcs );
  56.  
  57.     if (found) 
  58.     {
  59.         memset(&myPBRec,0,sizeof(myPBRec));
  60.     
  61.         printf(".ENET\n");
  62.         pstrcpy(EnetStr, "\p.ENET");
  63.         myPBRec.slotDevParam.ioCompletion = 0;
  64.         myPBRec.slotDevParam.ioNamePtr = EnetStr;
  65.         myPBRec.slotDevParam.ioSPermssn = fsCurPerm;
  66.         myPBRec.slotDevParam.ioSFlags = 0;
  67.         myPBRec.slotDevParam.ioSlot = slot;
  68.         myPBRec.slotDevParam.ioID = id;
  69.         err = OpenSlot(&myPBRec, false);
  70.         if (err == noErr)
  71.         {
  72.             ENETVRefNum = myPBRec.slotDevParam.ioVRefNum;
  73.             ENETRefNum = myPBRec.slotDevParam.ioSRefNum;        
  74.         }
  75.     }
  76.     else
  77.     {
  78.         printf(".ENET0\n");
  79.         pstrcpy(Enet0Str,"\p.ENET0");
  80.         err = OpenDriver(Enet0Str, &ENETRefNum);
  81.     }
  82.     
  83.     return ENETRefNum;
  84. }
  85.  
  86. OSErr Send_ENET( short ENETRefNum )
  87. {
  88. //    BlockMove(
  89.     return noErr;
  90. }
  91.  
  92. pascal void MyCompProc(EParamBlkPtr thePBPtr)
  93. {
  94.     Ptr aptr;
  95.     OSErr err;
  96.     
  97.     if (thePBPtr->ioResult < noErr)
  98.     {
  99.         if (thePBPtr->ioResult != reqAborted)
  100.         {
  101.             printf("Aiiieee! Completion failed!\n");
  102.         }
  103.         else
  104.         {
  105.             printf("Read aborted\n");
  106.         }
  107.     }
  108.     else
  109.     {
  110.         aptr = thePBPtr->u.EParms1.ePointer;
  111.         printf("Whoopee!\n");
  112.     }
  113.     
  114.     if (!gENETDone)
  115.     {
  116.         err = ERead((EParamBlkPtr)thePBPtr, true);
  117.         if (err != noErr)
  118.             printf("Aiiee! Completion read failed!\n");
  119.     }
  120. }
  121.  
  122. OSErr Detach_ENET_Packet_Handler( short ENETRefNum )
  123. {
  124.     EParamBlock myPB;
  125.     EParamBlkPtr myEPBPtr;
  126.     Ptr aptr;
  127.     OSErr err;
  128.     
  129.     myEPBPtr = &myPB;
  130.     myPB.u.EParms1.eProtType = ETHERTYPEID;
  131.     myPB.ioRefNum = ENETRefNum;
  132.     err = EDetachPH((EParamBlkPtr)myEPBPtr, false);
  133.     
  134.     if (err != noErr)
  135.     {
  136.         printf("Aieeee! Detach failed!\n");
  137.     }
  138.     gENETDone = 1;
  139.  
  140.     return err;
  141. }
  142.  
  143. OSErr Attach_ENET_Packet_Handler( short ENETRefNum )
  144. {
  145.     EParamBlock myPB;
  146.     EParamBlkPtr myEPBPtr;
  147.     Ptr aptr;
  148.     OSErr err;
  149.     
  150.     memset(&myPB,0,sizeof(myPB));
  151.     
  152.     myEPBPtr = &myPB;
  153.     myPB.u.EParms1.eProtType = ETHERTYPEID;
  154.     myPB.u.EParms1.ePointer = 0;
  155. //    myPB.ioCompletion = 0;
  156. //    myPB.ioVRefNum = ENETVRefNum;
  157.     myPB.ioRefNum = ENETRefNum;
  158. //    myPB.csCode = ENetAttachPH;
  159.     err = EAttachPH(&myPB, 0);
  160.     
  161.     if (err != noErr)
  162.     {
  163.         printf("Aieeee! Attach failed!\n");
  164.     }
  165.     else
  166.     {
  167.         aptr = NewPtr(NETBUFFERSIZE);
  168.         myPB.ioCompletion = NewENETCompletionProc(&MyCompProc);
  169.         myPB.u.EParms1.eProtType = ETHERTYPEID;
  170.         myPB.u.EParms1.ePointer = aptr;
  171.         myPB.u.EParms1.eBuffSize = NETBUFFERSIZE;
  172.         myPB.ioRefNum = ENETRefNum;
  173.         
  174.         err = ERead((EParamBlkPtr)myEPBPtr, true);
  175.         
  176.         if (err != noErr)
  177.         {
  178.             printf("Aiiiiieeeee! Read failed!\n");
  179.             Detach_ENET_Packet_Handler(ENETRefNum);
  180.         }
  181.     }
  182.     return err;
  183. }
  184.  
  185. main()
  186. {
  187.     short eref;
  188.     
  189.     printf("Macs suck!!!!\n\n");
  190.     printf("%d\n",eref = Get_ENET_Driver());
  191.  
  192.     while (!Button())
  193.         ;
  194.         
  195.     gENETDone = 0;
  196.     Attach_ENET_Packet_Handler(eref);
  197.     
  198.     while (!Button())
  199.         ;
  200.         
  201.     Detach_ENET_Packet_Handler(eref);
  202.     printf("Ok! Done\n");
  203.     return 1;
  204. }